impl Solution {
    pub fn get_least_numbers(arr: Vec<i32>, k: i32) -> Vec<i32> {
        use std::cmp::Reverse;
        use std::collections::BinaryHeap;
        let mut pq=BinaryHeap::with_capacity(arr.len());
        pq.extend(arr.into_iter().map(|v|Reverse(v)));
        let mut ans =Vec::with_capacity(k as usize);
        for i in 0..k{
            if let Some(Reverse(v))=pq.pop(){
                ans.push(v)
            }
        }
        return ans;
    }
}